# 算法步骤

核心思想:分而治之,将原问题分解为 n 个规模更小的,但是结构与原问题类似的子问题,递归解决子问题,再合并得到结果

基本步骤

  1. 分解:原问题分解为若干子问题
  2. 解决:对子问题进行递归求解或根据终止条件(Base Case)求解
  3. 合并:将子问题的结果合并,得到原问题的解

适用条件

  1. 原问题可以分解为具有相同结构的子问题
  2. 子问题可以独立求解,互相没有关联(分治与动态规划的明显区别)
  3. 具有分解的终止条件(Base Case)
  4. 子问题结果的合并,复杂度不能太高,否则算法不能有效降低复杂度

# 典型问题

  1. 二维平面上有 n 个点,如何快速计算出两个距离最近的点对
  2. 有两个 nn 的矩阵 A,B,如何快速求解两个矩阵的乘积 C=AB

海量数据处理:大部分数据结构和算法都是基于内存存储和单机处理,因此如果数据量非常大,无法一次加载到内存中去,很多算法便无法使用。一种解决思路是利用分治算法,将数据分为若干内存可以容纳的较小部分,对每个部分单独进行处理,最终再合并结果。这样不仅能克服内存限制,还能进一步利用多线程或者多机处理,加快处理速度

Last Updated: 7/1/2020, 2:19:02 AM